Portable memories may be used to store content and transfer the content between computing devices. Examples of such portable memories include CD-ROM, DVD-ROM, floppy disk, tape, flash memories, etc. Data may be recorded onto one of these portable memories using a read/write device connected to a first computer. The portable memory may then be removed from the first computer, and inserted into the reading device of a second computer. Using this technique, it is possible use a portable memory to transfer data between any two computers that have a read/write device for that portable memory. Moreover, in the case of content data (e.g., music, video), it may be desirable to place the content on a portable memory so that a single consumer can use the memory on various reading devices (e.g., living room CD player, car CD player, etc.).
While the ease of data transfer brought about by portable memories has advantages, it also presents problems. Some data is sensitive or proprietary (e.g., copyrighted audio or video), and it is desirable to control the dissemination of such data. One solution is to encrypt the data using a conventional encryption algorithm prior to storing it on a portable memory. A wide variety of encryption algorithms are known which provide good security. However, when encryption is used, the decryption key must be stored somewhere if the content is to be usable—e.g., the key may be stored in the portable memory reading device, or in a program that uses the data after it is retrieved from the portable memory. The best efforts to obscure the key (e.g., multiple encryption of the key, scattering of the key throughout data, embedding the key in secure hardware, etc.) can be broken. Even if it takes an enormous and expensive effort to discover the key, once the key is discovered the content can be decrypted and distributed in clear-text for the entire world to see. Worse, since encryption algorithms are generally well-known, once the key is discovered, software running on a general-purpose computer can be used to decrypt the content.
An example of the problem is a “globally shared secret” key which is known to a class of supposedly secure memory reading devices or data rendering programs. The secret key can be hidden in each such device or program using the best protection mechanisms that technology provides. The device may be designed or programmed not to use the key except under permitted circumstances. However, since the same key is hidden in perhaps millions of devices or programs, an enormous number of people have an opportunity to analyze the device or program to discover the key. It is a virtual certainty that a key used in this manner will eventually be discovered.
It is therefore clear that a potential for security breach exists when sensitive or proprietary data is stored on a portable memory. Thus there is a need for a system that overcomes the drawbacks of the prior art.